{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Compare Document Similarity Algorithms with Reurters-21578 Dataset\n",
    "\n",
    "First download the Reuters-21578 dataset in JSON format into the local folder:\n",
    "\n",
    "```bash\n",
    "git clone https://github.com/fergiemcdowall/reuters-21578-json\n",
    "```\n",
    "\n",
    "The first step will be to convert this into the default corpus format we use:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loaded  10377  documents\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import json\n",
    "import codecs \n",
    "import os\n",
    "import time\n",
    "\n",
    "docs = []\n",
    "for filename in os.listdir(\"reuters-21578-json/data/full\"):\n",
    "    f = open(\"reuters-21578-json/data/full/\"+filename)\n",
    "    js = json.load(f)\n",
    "    for j in js:\n",
    "        if 'topics' in j and 'body' in j:\n",
    "            d = {}\n",
    "            d[\"id\"] = j['id']\n",
    "            d[\"text\"] = j['body'].replace(\"\\n\",\"\")\n",
    "            d[\"title\"] = j['title']\n",
    "            d[\"tags\"] = \",\".join(j['topics'])\n",
    "            docs.append(d)\n",
    "print \"loaded \",len(docs),\" documents\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from  seldon.text import DocumentSimilarity,DefaultJsonCorpus\n",
    "\n",
    "corpus = DefaultJsonCorpus(docs)\n",
    "ds = DocumentSimilarity()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create scoring method\n",
    "\n",
    "We create a score method to run over a range of vector sizes and track the accuracy and the training time. The accuracy will be the jaccard similarity of the query vector tags to the nearest neighour tags averaged over all documents. This uses the tags as a proxy for evaluating good matches. Finally we show a graph of the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def score(ds,model_type):\n",
    "    scores = []\n",
    "    times = []\n",
    "    vec_sizes = [10,50,75,100,200,500]\n",
    "    for i in vec_sizes:\n",
    "        t0 = time.clock()\n",
    "        params = {\"vec_size\":i,\"model_type\":model_type}\n",
    "        ds.set_params(**params)\n",
    "        ds.fit(corpus)\n",
    "        times.append(time.clock() - t0)\n",
    "        scores.append(ds.score(approx=True))\n",
    "\n",
    "    import matplotlib.pyplot as plt\n",
    "    fig, ax1 = plt.subplots()\n",
    "    plt.title(\"1-nn accuracy with gensim lsi\")\n",
    "    ax1.set_xlabel(\"Vector Size\")\n",
    "    ax1.set_ylabel(\"Score\")\n",
    "    ax1.set_ylim(0.0, 1.1)\n",
    "    l1, = ax1.plot(vec_sizes, scores, 'o-', color=\"r\",label=\"accuracy\")\n",
    "\n",
    "    ax2 = ax1.twinx()\n",
    "    ax2.set_ylabel(\"Time (secs)\")\n",
    "    l2, = ax2.plot(vec_sizes, times, 'o-', color=\"g\",label=\"training time (secs)\")\n",
    "\n",
    "    plt.legend(handles=[l1,l2])\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run Gensim LSI test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb997a85150>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "score(ds,\"gensim_lsi\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Run Sklearn NMF test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nVvfBgwezfft2br75Zg4fPsytt97Kc889R7ly5bLPnRVHWWItKWMCZOSgkcStzPllFLcijhEDfV8+\n3h915NV95rn93Xff5bPPPuPLL7/kyJEjbN68GcjZesmrnsKc01OdOnUoV64c27dvz97m+boodRYm\nriZNmvD4449z6NCh7J/jx48zYMCAs46rVKkScXFxOVqLdevW5fXXX2fnzp1MmDCB++67j+TkZJo0\naULXrl1z1Hvs2DHGjx9PrVq1iImJISkp6axzlCtXjieffJK1a9fy/fffM2vWLN55553s/evXr6dd\nu3bFvgaljSUpYwKkb/e+vHL/K/Tc2pOum7vSc2tPXhn+SvZ6PyVVR926dUlOTs63zPHjx4mOjqZm\nzZqcOHGCxx57LMd+VfW5u83XspGRkVx//fWMGTOGU6dOsWHDBqZMmZJnMqpTpw4REREFfhZv8XiL\n7a677uJ///sfS5cuRVU5ceIEiYmJebYI+/Tpw6JFi7Lff/DBB+zYsQNwWloiQmRkJFdddRW//vor\nU6dOJS0tjbS0NJYtW8aGDRuIiIjgzjvv5IEHHmDXrl1kZGSwZMkSTp8+zcKFC/nll1/IyMigSpUq\nlC9fnsjIyOzzLV68mN69exfqs4cDS1LGBFDf7n2ZO3kuC99ayNzJcwuVXPxVx+jRo3n22WepUaMG\nL7/8MnB2q+S2226jadOmNGzYkPPPP59LL700R5ncgyHya9UUpuyrr77KkSNHqFevHkOGDGHgwIFE\nRUV5LVuxYkUef/xx/vjHP1KzZk1+/PFHn86V1+do3749b7zxBsOHD6dmzZq0aNEiR8slt7vvvpt3\n3303+/3y5cvp1KkTVapU4ZprrmHs2LHExsZSuXJl5s+fz/Tp02nYsCH169dn9OjR2QMyXnrpJS64\n4AI6dOhArVq1GD16NJmZmezevZubbrqJatWq0aZNGxISEhg8eDDgPCdVpUoVLr744jzjC1f2MK8x\nfhDKD/OWJo888gh79+7lzTffDHYoXt1yyy3079+fa665pkTPe+ONNzJs2DB69erldX9hHuYVkT8D\nQwEFfsFZEb0S8D7QFNgC9FfVw2750cCdQAYwUlW9j+YJEEtSxviBJami2bhxI6mpqVxwwQUsW7aM\nvn37MmnSJPr16xfs0EoVX5OUiDQEvgFaq2qqiLwPzAb+AOxX1RdE5BGghqo+KiJtgPeADkBD4Aug\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb9d9958350>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "score(ds,\"sklearn_nmf\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
